package algo;
/**
* Classe generant toutes les etapes du tri
* @author Kevin Georgy
* @since 13.06.2007
* @version 1.0
*/

class Steps {
	
	/**
	* Etape de depart
	*/	
	private StartStep start;
      
	/**
	* Etape de definition de reference
	*/	
	private DefineRefStep define;
   
	/**
	* Etape de recherche d'element a echanger
	*/	
	private AdvanceStep advance;
   
	/**
	* Etape d'echange
	*/	
	private SwapStep swap;
      
	/**
	* Etape de partitionnement
	*/	
	private PartitionStep partition;
      
	/**
	* Etape de fin
	*/	
	private EndStep end;
	
	/**
	* Construit les etapes
	* @param aQuickSort Tri sur lequel appliquer les etapes
	*/	
	Steps(QuickSort aQuickSort) {
		start = new StartStep(aQuickSort);
		define = new DefineRefStep(aQuickSort);
		advance = new AdvanceStep(aQuickSort);
		swap = new SwapStep(aQuickSort);
		partition = new PartitionStep(aQuickSort);
		end = new EndStep(aQuickSort);
	}
	
	/**
	* Retourne l'etape de depart
	* @return Etape de depart
	*/	
	StartStep start() {
		return start;
	}
	
	/**
	* Retourne l'etape de difinition de reference
	* @return Etape de definition de reference
	*/	
	DefineRefStep define() {
		return define;
	}
	
	/**
	* Retourne l'etape de recherche
	* @return Etape de recherche
	*/	
	AdvanceStep advance() {
		return advance;
	}
	
	/**
	* Retourne l'etape d'echange
	* @return Etape d'echange
	*/	
	SwapStep swap() {
		return swap;
	}
	
	/**
	* Retourne l'etape de partitionnement
	* @return Etape de partitionnement
	*/	
	PartitionStep partition() {
		return partition;
	}
	
	/**
	* Retourne l'etape de fin
	* @return Etape de fin
	*/	
	EndStep end() {
		return end;
	}
	
}
